package chpt03;

import chpt03.test.MyUtil;

public class Main {

	public static void main(String[] args) {
		
		testImport();
		testFinalField();
		testFinal();

	}

	
	private static void testImport() {
		MyUtil.printHi();
	}

	private static void testFinalField() {
		PersonX p = new PersonX();
		System.out.println(p.id);  // 输出1
		//p.id = 5;  // 无法编译通过
	}

	private static void testFinal() {
		final int i = 5, j;
		j = 6;    // 可以先将j修饰为final，然后在赋值。赋值后无法改变
		// i = 6; // 无编译法通过，j = 7 也无法通过
		final PersonV2 p = new PersonV2(), p1;
		p.setName("wang");     // 虽然p为final，但可以修改其属性
		// p = new PersonV2(); // 无法编译通过
		p1 = new PersonV2();   // 前面定义了p1 ，随后再赋值
		p1.setName("chen");
		System.out.println(i + ", " + j + ", j");
		System.out.println(p.getName());
		System.out.println(p1.getName());
	}
	

}
class PersonX {
	final int id;
	double grade;
	static int num = 0;
	{
		num++;
		id = num;
	}
}
